/*  ----------------------------------------------------------------------------
 *  Arello Mobile
 *  Fast 3d Engine
 *  ----------------------------------------------------------------------------
 * Except where otherwise noted, this work is licensed under
 * http://creativecommons.org/licenses/by/3.0
 */
#pragma once

#include <lib3d/Cameras.h>
#include <list>
#include "Node.h"
#include <CompilerFeatures.h>

namespace liba {
namespace lib3d {
namespace node {

class Root : public Node
{
public:
	Root(const Atom & name)
		:   Node( name, 0 )
	{}
	virtual ~Root();
	void add_camera( node::Camera * camera )
	{
		cameras.add( camera );
	}
	void remove_camera( node::Camera * camera )
	{
		cameras.remove( camera );
	}
	node::Camera * find_camera( const Atom & name )
	{
		return cameras.find( name );
	}
	virtual Root * GetRoot() LIBA_OVERRIDE
	{
		return this;
	}
	virtual void RenderToList( hard::Hardware * hardware, hard::RenderList * render_list ) LIBA_OVERRIDE;
	virtual void CreateProxy(ProxyVisitor * proxyVisitor) LIBA_OVERRIDE;
private:
	Cameras cameras;
};

} // namespace node
} // namespace lib3d
} // nameapace liba
using namespace liba;
